import {
  exportUrl,
  getFactoryCodeList,
  getSimulatedTypeList,
  getProdOrderTypeList,
  getBackflushTypeList,
  getOrderBarcodeRuleList,
  getBomVersionNumberList,
  getProdOrderStatusList,
  getLineCodeList, //查询线体
  getPrepositionTypeList,
  getModelingTypeList,
  getLineCodeListNew,
  getStationCodeList,
  getequipmentCodeList,
  getMesTechnologyList,
  getModelSetting,
} from "@/api/order/mesProdOrder";

import excelUpload from "@/components/excel-upload/excelUpload";
import { checkStr } from "@/utils/judge";
import url from "@/axios/url";
const { messerviceUrl } = url();
let vm = null;
const sendThis = (_this) => {
  vm = _this;
};
var validatePass = (rule, value, callback) => {
  if (!checkStr(value, "english-number")) {
    callback(new Error($i18n.t("mesProdOrder.rule8")));
  } else {
    callback();
  }
};
export { sendThis };
// 列表头按钮配置
export const operateList = [
  // {
  //   name: $i18n.t("common.add"),
  //   type: "primary",
  //   icon: "el-icon-circle-plus-outline",
  //   handleName: "add", // 点击时返回的标识
  // },
  // {
  //   name: $i18n.t("common.delete"),
  //   type: "danger",
  //   icon: "el-icon-delete",
  //   handleName: "deleteBatch", //点击时返回的标识
  //   isMultiple: true,
  // },
  // {
  //   name: $i18n.t("common.downloadTemplate"),
  //   type: "success",
  //   icon: "el-icon-download",
  //   handleName: "exportExcel", // 点击时返回的标识
  // },
  // {
  //   // 导入文件
  //   render: (h, scope) => {
  //     // scope列表上选择的数据
  //     const uploadUrl = `${messerviceUrl}mesProdOrder/importData`;
  //     return (
  //       <excelUpload
  //         action={uploadUrl}
  //         on={{
  //           handleUploadError: (err) => {
  //             // 失败的回调
  //             console.log(err);
  //             vm.refresh();
  //           },
  //           handleUploadSuccess: (res) => {
  //             // 成功 的回调
  //             console.log(res);
  //             vm.refresh();
  //           },
  //         }}
  //       />
  //     );
  //   },
  // },
  // {
  //   name: $i18n.t("common.export"),
  //   type: "primary",
  //   icon: "el-icon-download",
  //   handleName: "export", // 点击时返回的标识
  //   url: exportUrl,
  //   // auth: "auth:operlog:export", //权限字段
  // },

  // {
  //   name: $i18n.t("mesProdOrder.issue"),
  //   type: "primary",
  //   icon: "el-icon-download",
  //   handleName: "generate", // 点击时返回的标识
  // },
  // {
  //   name: $i18n.t("mesProdOrder.processReport"),
  //   type: "primary",
  //   icon: "el-icon-circle-plus-outline",
  //   handleName: "reportOrder",
  //   disabled: (data) => {
  //     return data.length != 1;
  //   },
  // },
  // {
  //   name: $i18n.t("mesProdOrder.priority"),
  //   type: "primary",
  //   icon: "el-icon-circle-plus-outline",
  //   handleName: "priorityOrder"
  // },
  // {
  //   name: "打印流通卡",
  //   type: "primary",
  //   icon: "el-icon-download",
  //   handleName: "handlePrint", // 点击时返回的标识
  // },
];
// 行末按钮配置
export const rowConfig = [
  // {
  //   name: $i18n.t("common.edit"),
  //   type: "primary",
  //   class: "row-btn-primary",
  //   handleName: "edit", // 点击时返回的标识
  //   show: (row) => {
  //     return row.orderStatus == 5;
  //   },
  // },
  // {
  //   name: $i18n.t("mesProdOrder.thaw"),
  //   type: "danger",
  //   icon: "el-icon-close",
  //   handleName: "close", //点击时返回的标识
  //   show: (row) => {
  //     return row.orderStatus == 5;
  //   },
  // },
  // {
  //   name: $i18n.t("mesProdOrder.freeze"),
  //   type: "warning",
  //   icon: "el-icon-close",
  //   handleName: "close", //点击时返回的标识
  //   show: (row) => {
  //     return row.orderStatus != 5;
  //   },
  // },
  // {
  //   name:  "异常关结",
  //   type: "danger",
  //   class: "row-btn-info",
  //   handleName: "abnormalClosure", // 点击时返回的标识
  // },
  {
    name: $i18n.t("mesProdOrder.upType"),
    type: "warning",
    class: "row-btn-info",
    handleName: "upType", // 点击时返回的标识
  },
  {
    name: $i18n.t("mesProdOrder.downTpe"),
    type: "warning",
    class: "row-btn-info",
    handleName: "downTpe", // 点击时返回的标识
  },
];
// 搜索条件配置
export const searchConfig = {
  data() {
    const self = this;
    return {
      searchDialog: {
        inline: true,
        formDesc: {
          // orderCode: {
          //   type: "input",
          //   label: $i18n.t("mesProdOrder.codeStrategy"),
          // },
          // planCode: {
          //   type: "input",
          //   label: $i18n.t("mesProdOrder.productionOrderCode"),
          // },

          // prodCode: {
          //   type: "input",
          //   label: $i18n.t("mesProdOrder.goodsCode"),
          // },
          // simulatedType: {
          //   label: "虚实订单类型",
          //   type: "select",
          //
          //   prop: {
          //     value: "value",
          //     text: "description",
          //   },
          //   options: async (data) => {
          //     const list = await getSimulatedTypeList();
          //     return list.data.result;
          //   },
          // },
          // prodOrderType: {
          //   label: $i18n.t("mesProdOrder.prodOrderType"),
          //   type: "select",
          //   prop: {
          //     value: "value",
          //     text: "description",
          //   },
          //   options: async (data) => {
          //     const list = await getProdOrderTypeList();
          //     return list.data.result;
          //   },
          // },
          planBeginDate: {
            type: "date",
            label: $i18n.t("mesProdOrder.planBeginDate"),
            attrs: {
               'value-format': "yyyy-MM-dd",
               clearable:false,
            },
            required: true,
            // default: new Date("yyyy-MM-dd")


          },
          // lineCode: {
          //   label: $i18n.t("mesProdOrder.line"),
          //   type: "select",
          //   prop: {
          //     value: "modelingCode",
          //     text: "modelingName",
          //   },
          //   options: async (data) => {
          //     const params = {
          //       modelingCode: self.$store.getters.factoryCode,
          //       level: 5,
          //     };
          //     const list = await getLineCodeList(params);
          //     return list.data.result;
          //   },
          // },
          // orderStatus: {
          //   label: $i18n.t("mesProdOrder.orderStatus"),
          //   type: "select",

          //   prop: {
          //     value: "value",
          //     text: "description",
          //   },
          //   options: async (data) => {
          //     const list = await getProdOrderStatusList();
          //     return list.data.result;
          //   },
          // },
          // workshopCode: {
          //   label: $i18n.t("mesProdOrder.workshopName"),
          //   type: "select",

          //   prop: {
          //     value: "modelingCode",
          //     text: "modelingName",
          //   },
          //   options: async (data) => {
          //     const params = {
          //       modelingCode: self.$store.getters.factoryCode,
          //       level: 4,
          //       modelingType: "0",
          //     };
          //     const list = await getLineCodeListNew(params);
          //     return list.data.result;
          //   },
          // },
        },
      },
    };
  },
};

export const configformDescDialog = {
  data() {
    var validatePass = (rule, value, callback) => {
      if (!checkStr(value, "english-number-")) {
        callback(new Error($i18n.t("mesProdOrder.rule11")));
      } else {
        callback();
      }
    };
    return {
      // 新增/删除表单配置
      formDescDialog: {
        span: 24,
        disabled: false,
        isShowSubmitBtn: true,
        rules: {
          orderCode: [
            {
              validator: validatePass,
              trigger: ["change", "blur"],
            },
          ],
        },
        formDesc: {
          orderCode: {
            type: "input",
            label: $i18n.t("mesProdOrder.codeStrategy"),
            layout: 8,
            // disabled: (d) => !!d.id,
            disabled: (data) => {
              return !!data.codeStrategy || !!data.id;
            },
            // required: true,
          },
          // factoryCode: {
          //   type: "select",
          //   label: "工厂编码",
          //   layout: 12,
          //   required: true,
          //   prop: {
          //     value: "modelingCode",
          //     text: "modelingName",
          //   },
          //   options: async (data) => {
          //     const list = await getFactoryCodeList()
          //     return list.data.result
          //   },
          // },
          planCode: {
            type: "select",
            label: $i18n.t("mesProdOrder.productionOrderCode"),
            layout: 8,
            required: true,
          },
          //          saleCode: {
          //            type: "input",
          //            label: "销售订单",
          //            layout: 8,
          //            // required: true,
          //            disabled: true,
          //          },

          prodCode: {
            type: "input",
            label: $i18n.t("mesProdOrder.goodsCode"),
            layout: 8,
            required: true,
            disabled: true,
          },
          bomVersionNumber: {
            type: "input",
            label: $i18n.t("mesProdOrder.bomVersionNumber"),
            layout: 8,
            required: false,
            disabled: true,
          },
          prodName: {
            type: "input",
            label: $i18n.t("mesProdOrder.goodsName"),
            layout: 8,
            required: false,
            disabled: true,
          },

          prodOrderType: {
            type: "select",
            label: $i18n.t("mesProdOrder.prodOrderType"),
            layout: 8,
            required: true,
            disabled: true,
            prop: {
              value: "value",
              text: "description",
            },
            options: async (data) => {
              const list = await getProdOrderTypeList();
              return list.data.result;
            },
          },
          seriesCode: {
            type: "input",
            label: $i18n.t("mesProdOrder.seriesCode"),
            layout: 8,
            required: true,
            disabled: true,
          },

          seriesName: {
            type: "input",
            label: $i18n.t("mesProdOrder.seriesName"),
            layout: 8,
            disabled: true,
          },
          unit: {
            type: "input",
            label: $i18n.t("mesProdOrder.measureUnit2"),
            layout: 8,
            disabled: true,
          },
          // batchNo: {
          //   type: "input",
          //   label: "批次号",
          //   layout: 8,
          //   required: false,
          //   disabled: true,
          // },
          // bomVersionNumber: {
          //   type: "input",
          //   label: "BOM配方版本号",
          //   layout: 8,
          //   required: false,
          // },
          // simulatedType: {
          //   type: "select",
          //   label: "虚实订单类型",
          //   layout: 8,
          //   required: true,
          //   prop: {
          //     value: "value",
          //     text: "description",
          //   },
          //   options: async (data) => {
          //     const list = await getSimulatedTypeList();
          //     return list.data.result;
          //   },
          // },

          // priority: {
          //   type: "number",
          //   label: "工单优先级",
          //   layout: 8,
          //   required: true,
          //   min: 1,
          // },
          // technologyId: {
          //   type: "input",
          //   label: "工艺建模流程主键",
          //   layout: 12,
          //   required: true,
          // },
          //          deliveryDate: {
          //            type: "date",
          //            label: "交货期",
          //            layout: 8,
          //            required: false,
          //            attrs: {
          //              valueFormat: "yyyy-MM-dd",
          //            },
          //            disabled: true,
          //          },
          //          slackTime: {
          //            type: "number",
          //            label: "交货期宽裕天数",
          //            layout: 8,
          //            required: false,
          //            disabled: true,
          //          },
          quantity: {
            type: "number",
            label: $i18n.t("mesProdOrder.planQuantity"),
            layout: 8,
            required: true,
            attrs: {
              min: 1,
            },
          },

          planBeginDate: {
            type: "date",
            label: $i18n.t("mesProdOrder.planBeginDate"),
            layout: 8,
            required: true,
            attrs: {
              valueFormat: "yyyy-MM-dd",
            },
            on: {
              change: this.handleStartDate,
            },
          },
          planEndDate: {
            type: "date",
            label: $i18n.t("mesProdOrder.planEndDate"),
            layout: 8,
            required: true,
            attrs: {
              valueFormat: "yyyy-MM-dd",
            },
            on: {
              change: this.handleEndDate,
            },
          },
          // technologyName: {
          //   type: "input",
          //   label: "工艺流程",
          //   layout: 8,
          //   required: true,
          //   disabled: true,
          //   optionsLinkageFields: ["prodCode"],
          // },
          // versionNumber: {
          //   type: "input",
          //   label: "工艺流程版本号",
          //   layout: 8,
          //   disabled: true,
          // },

          // advanceCode: {
          //   type: "input",
          //   label: "提前定单号",
          //   layout: 8,
          //   required: false,
          // },
          // backflushType: {
          //   type: "select",
          //   label: "倒冲类型",
          //   layout: 8,
          //   required: true,
          //   prop: {
          //     value: "value",
          //     text: "description",
          //   },
          //   options: async (data) => {
          //     const list = await getBackflushTypeList();
          //     return list.data.result;
          //   },
          // },
          // prepositionType: {
          //   type: "select",
          //   label: "前置工单类型",
          //   layout: 8,
          //   // required: true,
          //   prop: {
          //     value: "value",
          //     text: "description",
          //   },
          //   options: async (data) => {
          //     const list = await getPrepositionTypeList();
          //     return list.data.result;
          //   },
          // },
          // prepositionCode: {
          //   type: "input",
          //   label: "前置工单号",
          //   layout: 8,
          //   // required: true,
          // },
          remark: {
            type: "textarea",
            label: $i18n.t("common.remark"),
            layout: 24,
            required: false,
          },
        },
      },
    };
  },
};

export const configformDescDialog_generate = {
  data() {
    const _this = this;
    var validatePass = (rule, value, callback) => {
      setTimeout(() => {
        if (value !== "") {
          if (!checkStr(value, "english-number")) {
            callback(new Error($i18n.t("mesProdOrder.rule8")));
          } else {
            callback();
          }
        } else {
          callback();
        }
      }, 100);
    };
    return {
      // 下发表单配置
      formDescDialog_generate: {
        span: 24,
        disabled: false,
        isShowSubmitBtn: true,
        rules: {
          equipmentCode: [
            {
              validator: validatePass,
              trigger: ["change", "blur"],
            },
          ],
          stationCode: [
            {
              validator: validatePass,
              trigger: ["change", "blur"],
            },
          ],
        },
        ids: "",
        submitProdLineList: "",
        formDesc: {
          tip: {
            type: "text",
            label: $i18n.t("mesProdOrder.tip"),
            layout: 24,
          },
          workshopCode: {
            type: "select",
            label: $i18n.t("mesProdOrder.workshopName"),
            layout: 24,
            required: true,
            // disabled: true,
            attrs: {
              filterable: true,
            },
            prop: {
              value: "modelingCode",
              text: "modelingName",
            },
            optionsLinkageFields: ["id"],
            on: {
              change: (val) => {
                _this.getModelSetting(val);
              },
            },
            options: async (data) => {
              const params = {
                modelingCode: this.$store.getters.factoryCode,
                level: 4,
                modelingType: "0",
              };
              const list = await getLineCodeListNew(params);
              this.workshopList = list.data.result;
              return list.data.result;
            },
            // vif:(data)=>{
            //   formDataDialog.aa
            // }
          },
          lineCode: {
            type: "select",
            label: $i18n.t("mesProdOrder.line"),
            layout: 24,
            // required: true,
            attrs: {
              filterable: true,
            },
            prop: {
              value: "modelingCode",
              text: "modelingName",
            },
            optionsLinkageFields: ["workshopCode", "id"],
            options: async (data) => {
              const params = {
                // modelingCode: this.$store.getters.factoryCode,
                level: 5,
                modelingCode: data.workshopCode,
              };
              if (!data.workshopCode) return [];
              const list = await getLineCodeList(params);
              this.lineList = list.data.result;

              return list.data.result;
            },
            vif: (data) => {
              // 工单报工-统一报工 显示车间（必选）、设备（非必选）
              if (
                data.reportType == "mes_report_type_order" &&
                data.reportWay == "report_way_unite"
              ) {
                return false;
              } else if (
                data.reportType == "mes_report_type_order" &&
                data.reportWay == "report_way_process"
              ) {
                return false;
              } else if (data.reportType == "mes_report_type_process") {
                return true;
              } else if (data.reportType == "mes_report_type_workcell") {
                return true;
              } else {
                return true;
              }
            },
          },
          technologyName: {
            type: "number",
            label: $i18n.t("mesProdOrder.csiProcessFileNameEntity"),
            layout: 24,
            required: (data) => {
              // 工单报工-统一报工 显示车间（必选）、设备（非必选）
              if (
                data.reportType == "mes_report_type_order" &&
                data.reportWay == "report_way_unite"
              ) {
                return false;
              }
              // 工单报工-按工序报工 显示车间（必选）、工艺流程（必选）、设备（非必选）
              else if (
                data.reportType == "mes_report_type_order" &&
                data.reportWay == "report_way_process"
              ) {
                return true;
              }

              // 工序报工 显示车间（必选）、线体（非必填）、工艺流程（必选）、工位（非必选）、设备（非必选）
              else if (data.reportType == "mes_report_type_process") {
                return true;
              }

              // 工位报工 显示车间（必选）、线体（非必填）、工艺流程（必选）、工位（非必选）、设备（非必选）
              else if (data.reportType == "mes_report_type_workcell") {
                return true;
              } else {
                return false;
              }
            },
            vif: (data) => {
              // 工单报工-统一报工 显示车间（必选）、设备（非必选）
              console.log(
                "data.reportType:",
                data.reportType,
                ";data.reportWay:",
                data.reportWay
              );
              if (
                data.reportType == "mes_report_type_order" &&
                data.reportWay == "report_way_unite"
              ) {
                return false;
              }
              // 工单报工-按工序报工 显示车间（必选）、工艺流程（必选）、设备（非必选）
              else if (
                data.reportType == "mes_report_type_order" &&
                data.reportWay == "report_way_process"
              ) {
                return true;
              }

              // 工序报工 显示车间（必选）、线体（非必填）、工艺流程（必选）、工位（非必选）、设备（非必选）
              else if (data.reportType == "mes_report_type_process") {
                return true;
              }

              // 工位报工 显示车间（必选）、线体（非必填）、工艺流程（必选）、工位（非必选）、设备（非必选）
              else if (data.reportType == "mes_report_type_workcell") {
                return true;
              } else {
                return true;
              }
            },
          },
          // versionNumber: {
          //   type: "input",
          //   label: "版本号",
          //   layout: 24,
          //   // required: true,
          //   disabled: true,
          // },
          // stationCode: {
          //   type: "select",
          //   label: "工位",
          //   layout: 24,
          //   attrs: {
          //     filterable: true,
          //   },
          //   prop: {
          //     value: "modelingCode",
          //     text: "modelingName",
          //   },
          //   optionsLinkageFields: ["lineCode", "technologyId"],
          //   options: async (data) => {
          //     debugger;
          //     const params = {
          //       lineCode: data.lineCode,
          //       technologyId: data.technologyId,
          //     };
          //     if (!data.technologyName) return [];
          //     const list = await getStationCodeList(params);
          //     this.stationList = list.data.result;
          //     return list.data.result;
          //   },
          // },

          // equipmentCode: {
          //   type: "select",
          //   label: "设备",
          //   layout: 24,
          //   attrs: {
          //     filterable: true,
          //   },
          //   prop: {
          //     value: "equipmentCode",
          //     text: "equipmentName",
          //   },
          //   optionsLinkageFields: ["stationCode"],
          //   options: async (data) => {
          //     const params = {
          //       modelingCode: data.stationCode,
          //     };
          //     if (!data.stationCode) return [];
          //     const list = await getequipmentCodeList(params);
          //     // this.lineList = list.data.result;
          //     this.equipmentList = list.data.result;
          //     return list.data.result;
          //   },
          // },
          // orderBarcodeRuleCode: {
          //   type: "select",
          //   label: "条码生成规则",
          //   layout: 24,
          //   required: true,
          //   prop: {
          //     value: "code",
          //     text: "description",
          //   },
          //   options: async (data) => {
          //     const list = await getOrderBarcodeRuleList();
          //     this.orderBarcodeRuleList = list.data.result;
          //     return list.data.result;
          //   },
          // },
        },
      },
    };
  },
};

export const configformDescDialog_report = {
  data() {
    return {
      // 新增/删除表单配置
      formDescDialog_report: {
        span: 24,
        disabled: false,
        isShowSubmitBtn: true,
        formDesc: {
          orderCode: {
            type: "input",
            label: $i18n.t("mesProdOrder.codeStrategy"),
            layout: 8,
            // disabled: (d) => !!d.id,
            disabled: (data) => {
              return !!data.codeStrategy || !!data.id;
            },
            // required: true,
          },
          planCode: {
            type: "select",
            label: $i18n.t("mesProdOrder.productionOrderCode"),
            layout: 8,
            disabled: true,
            required: true,
          },
          prodCode: {
            type: "input",
            label: $i18n.t("mesProdOrder.goodsCode"),
            layout: 8,
            required: true,
            disabled: true,
          },
          bomVersionNumber: {
            type: "input",
            label: $i18n.t("mesProdOrder.bomVersionNumber"),
            layout: 8,
            required: false,
            disabled: true,
          },
          prodName: {
            type: "input",
            label: $i18n.t("mesProdOrder.goodsName"),
            layout: 8,
            required: false,
            disabled: true,
          },
          unit: {
            type: "input",
            label: $i18n.t("mesProdOrder.measureUnit2"),
            layout: 8,
            disabled: true,
          },
          reportList: {
            type: "input",
            label: $i18n.t("mesProdOrder.processReportDetails"),
            layout: 24,
            required: false,
          },
        },
      },
    };
  },
};
